<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>xilffs: diskio.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="HTML_custom.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="xlogo_bg.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">xilffs
   </div>
   <div id="projectbrief">Vitis Drivers API Documentation</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Overview</span></a></li>
      <li><a href="globals.html"><span>APIs</span></a></li>
      <li><a href="files.html"><span>File&#160;List</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;"
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('diskio_8c.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">diskio.c File Reference</div>  </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Overview</h2>
<div class="textblock"><p>This file is the glue layer between file system and driver. </p>
<pre class="fragment">    Description related to SD driver:
    Process to use file system with SD
    Select xilffs in SDK when creating a BSP
    In SDK, set "fs_interface" to 1 to select SD interface.
    This glue layer can currently be used only with one
    SD controller enabled.
    In order to use eMMC, in SDK set "Enable MMC" to 1. If not,
    SD support is enabled by default.

    Description:
    This glue layer initializes the host controller and SD card
    in disk_initialize. If SD card supports it, 4-bit mode and
    high speed mode will be enabled.
    The default block size is 512 bytes.
    disk_read and disk_write functions are used to read and
    write files using ADMA2 in polled mode.
    The file system can be used to read from and write to an
    SD card that is already formatted as FATFS.
</pre><pre>
MODIFICATION HISTORY:</pre><pre>Ver     Who     Date            Changes
----- ---- -------- -------------------------------------------------------
1.00a hk   10/17/13 First release
2.0   hk   02/12/14 Corrected status check in disk initialize. CR# 772072.
2.1   hk   04/16/14 Move check for ExtCSD high speed bit set inside if
                    condition for high speed support.
                    Include xil_types.h irrespective of xsdps.h. CR# 797086.
2.2   hk   07/28/14 Make changes to enable use of data cache.
3.0     sk       12/04/14 Added support for micro SD without
                                          WP/CD. CR# 810655.
                                  Make changes for prototypes of disk_read and
                                  disk_write according to latest version.
                 12/15/14 Modified the code according to MISRAC 2012 Compliant.
                                  Updated the FatFs to R0.10b
                                  Removed alignment for local buffers as CacheInvalidate
                                  will take care of it.
        sg   03/03/15 Added card detection check logic
             04/28/15 Card detection only in case of card detection signal
3.1   sk   06/04/15 Added support for SD1.
3.2   sk   11/24/15 Considered the slot type before checking the CD/WP pins.
3.3   sk   04/01/15 Added one second delay for checking CD pin.
3.4   sk   06/09/16 Added support for mkfs.
3.8   mj   07/31/17 Added support for RAM based FATfs.
      mn   12/04/17 Resolve errors in XilFFS for ARMCC compiler
3.9   mn   04/18/18 Resolve build warnings for xilffs library
      mn   07/06/18 Fix Cppcheck and Doxygen warnings
4.2   mn   08/16/19 Initialize Status variables with failure values
      mn   09/25/19 Check if the SD is powered on or not in <a class="el" href="diskio_8c.html#a8348ac5ee6d709420c02e45c111f4793" title="Gets the status of the disk. ">disk_status()</a>
4.3   mn   02/24/20 Remove unused macro defines
      mn   04/08/20 Set IsReady to '0' before calling XSdPs_CfgInitialize
4.5   sk   03/31/21 Maintain discrete global variables for each controller.
4.6   sk   07/20/21 Fixed compilation warning in RAM interface.
4.8   sk   05/05/22 Replace standard lib functions with Xilinx functions.
5.1   ro   06/12/23 Added support for system device-tree flow.
5.2   ap   12/05/23 Add SDT check to fix bug in disk_initialize.
      ap   01/11/24 Fix Doxygen warnings.
      sk   07/11/24 Add UFS interface support.</pre><pre></pre><dl class="section note"><dt>Note</dt><dd></dd></dl>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a6a4641fe53e931f300c4d2c76b3729a0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8c.html#a6a4641fe53e931f300c4d2c76b3729a0">XSDPS_NUM_INSTANCES</a>&#160;&#160;&#160;2</td></tr>
<tr class="memdesc:a6a4641fe53e931f300c4d2c76b3729a0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of SD instances.  <a href="#a6a4641fe53e931f300c4d2c76b3729a0">More...</a><br/></td></tr>
<tr class="separator:a6a4641fe53e931f300c4d2c76b3729a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae78c57957d7a0cd5922d35610b0831d6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8c.html#ae78c57957d7a0cd5922d35610b0831d6">XUFSPSXC_START_INDEX</a>&#160;&#160;&#160;3</td></tr>
<tr class="memdesc:ae78c57957d7a0cd5922d35610b0831d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Start index of UFS instances.  <a href="#ae78c57957d7a0cd5922d35610b0831d6">More...</a><br/></td></tr>
<tr class="separator:ae78c57957d7a0cd5922d35610b0831d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a8348ac5ee6d709420c02e45c111f4793"><td class="memItemLeft" align="right" valign="top">DSTATUS&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8c.html#a8348ac5ee6d709420c02e45c111f4793">disk_status</a> (BYTE pdrv)</td></tr>
<tr class="memdesc:a8348ac5ee6d709420c02e45c111f4793"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the status of the disk.  <a href="#a8348ac5ee6d709420c02e45c111f4793">More...</a><br/></td></tr>
<tr class="separator:a8348ac5ee6d709420c02e45c111f4793"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a09cdaa6f36fa409bdf002727bff98eb1"><td class="memItemLeft" align="right" valign="top">DSTATUS&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8c.html#a09cdaa6f36fa409bdf002727bff98eb1">disk_initialize</a> (BYTE pdrv)</td></tr>
<tr class="memdesc:a09cdaa6f36fa409bdf002727bff98eb1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the drive.  <a href="#a09cdaa6f36fa409bdf002727bff98eb1">More...</a><br/></td></tr>
<tr class="separator:a09cdaa6f36fa409bdf002727bff98eb1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0711b1d03b833e9d73b3be1a6397f461"><td class="memItemLeft" align="right" valign="top">DRESULT&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8c.html#a0711b1d03b833e9d73b3be1a6397f461">disk_read</a> (BYTE pdrv, BYTE *buff, LBA_t sector, UINT count)</td></tr>
<tr class="memdesc:a0711b1d03b833e9d73b3be1a6397f461"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads the drive In case of SD, it reads the SD card using ADMA2 in polled mode.  <a href="#a0711b1d03b833e9d73b3be1a6397f461">More...</a><br/></td></tr>
<tr class="separator:a0711b1d03b833e9d73b3be1a6397f461"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab00fa450a811dbdabe3c655c1a36fab4"><td class="memItemLeft" align="right" valign="top">DRESULT&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8c.html#ab00fa450a811dbdabe3c655c1a36fab4">disk_ioctl</a> (BYTE pdrv, BYTE cmd, void *buff)</td></tr>
<tr class="memdesc:ab00fa450a811dbdabe3c655c1a36fab4"><td class="mdescLeft">&#160;</td><td class="mdescRight">List specific features and do miscellaneous functions on device.  <a href="#ab00fa450a811dbdabe3c655c1a36fab4">More...</a><br/></td></tr>
<tr class="separator:ab00fa450a811dbdabe3c655c1a36fab4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af58b536abfd30f77213f4ecaf2ac52f5"><td class="memItemLeft" align="right" valign="top">DWORD&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8c.html#af58b536abfd30f77213f4ecaf2ac52f5">get_fattime</a> (void)</td></tr>
<tr class="memdesc:af58b536abfd30f77213f4ecaf2ac52f5"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is User Provided Timer Function for FatFs module.  <a href="#af58b536abfd30f77213f4ecaf2ac52f5">More...</a><br/></td></tr>
<tr class="separator:af58b536abfd30f77213f4ecaf2ac52f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac24448955ef914f54a499df1fb45689d"><td class="memItemLeft" align="right" valign="top">DRESULT&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8c.html#ac24448955ef914f54a499df1fb45689d">disk_write</a> (BYTE pdrv, const BYTE *buff, LBA_t sector, UINT count)</td></tr>
<tr class="memdesc:ac24448955ef914f54a499df1fb45689d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads the drive In case of SD, it reads the SD card using ADMA2 in polled mode.  <a href="#ac24448955ef914f54a499df1fb45689d">More...</a><br/></td></tr>
<tr class="separator:ac24448955ef914f54a499df1fb45689d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="a6a4641fe53e931f300c4d2c76b3729a0"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XSDPS_NUM_INSTANCES&#160;&#160;&#160;2</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Number of SD instances. </p>

<p>Referenced by <a class="el" href="diskio_8c.html#a09cdaa6f36fa409bdf002727bff98eb1">disk_initialize()</a>, <a class="el" href="diskio_8c.html#ab00fa450a811dbdabe3c655c1a36fab4">disk_ioctl()</a>, <a class="el" href="diskio_8c.html#a0711b1d03b833e9d73b3be1a6397f461">disk_read()</a>, <a class="el" href="diskio_8c.html#a8348ac5ee6d709420c02e45c111f4793">disk_status()</a>, and <a class="el" href="diskio_8c.html#ac24448955ef914f54a499df1fb45689d">disk_write()</a>.</p>

</div>
</div>
<a class="anchor" id="ae78c57957d7a0cd5922d35610b0831d6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XUFSPSXC_START_INDEX&#160;&#160;&#160;3</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Start index of UFS instances. </p>

<p>Referenced by <a class="el" href="diskio_8c.html#ab00fa450a811dbdabe3c655c1a36fab4">disk_ioctl()</a>, <a class="el" href="diskio_8c.html#a0711b1d03b833e9d73b3be1a6397f461">disk_read()</a>, and <a class="el" href="diskio_8c.html#ac24448955ef914f54a499df1fb45689d">disk_write()</a>.</p>

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a09cdaa6f36fa409bdf002727bff98eb1"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">DSTATUS disk_initialize </td>
          <td>(</td>
          <td class="paramtype">BYTE&#160;</td>
          <td class="paramname"><em>pdrv</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Initializes the drive. </p>
<p>In case of SD, it initializes the host controller and the card. This function also selects additional settings such as bus width, speed and block size.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">pdrv</td><td>- Drive number</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>s - which contains an OR of the following information STA_NODISK Disk is not present STA_NOINIT Drive not initialized STA_PROTECT Drive is write protected 0 or only STA_PROTECT both indicate successful initialization.</dd></dl>
<dl class="section note"><dt>Note</dt><dd></dd></dl>

<p>References <a class="el" href="diskio_8c.html#a8348ac5ee6d709420c02e45c111f4793">disk_status()</a>, and <a class="el" href="diskio_8c.html#a6a4641fe53e931f300c4d2c76b3729a0">XSDPS_NUM_INSTANCES</a>.</p>

</div>
</div>
<a class="anchor" id="ab00fa450a811dbdabe3c655c1a36fab4"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">DRESULT disk_ioctl </td>
          <td>(</td>
          <td class="paramtype">BYTE&#160;</td>
          <td class="paramname"><em>pdrv</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">BYTE&#160;</td>
          <td class="paramname"><em>cmd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>buff</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>List specific features and do miscellaneous functions on device. </p>
<p>In case of SD, it control device specific features and miscellaneous functions other than generic read/write.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">pdrv</td><td>- Drive number </td></tr>
    <tr><td class="paramname">cmd</td><td>- Command code </td></tr>
    <tr><td class="paramname">buff</td><td>- Pointer to the parameter depends on the command code.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>RES_OK Command successful RES_PARERR Command is invalid RES_NOTRDY Drive not initialized RES_ERROR Error occured</dd></dl>
<dl class="section note"><dt>Note</dt><dd></dd></dl>

<p>References <a class="el" href="diskio_8c.html#a8348ac5ee6d709420c02e45c111f4793">disk_status()</a>, <a class="el" href="diskio_8c.html#a6a4641fe53e931f300c4d2c76b3729a0">XSDPS_NUM_INSTANCES</a>, and <a class="el" href="diskio_8c.html#ae78c57957d7a0cd5922d35610b0831d6">XUFSPSXC_START_INDEX</a>.</p>

</div>
</div>
<a class="anchor" id="a0711b1d03b833e9d73b3be1a6397f461"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">DRESULT disk_read </td>
          <td>(</td>
          <td class="paramtype">BYTE&#160;</td>
          <td class="paramname"><em>pdrv</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">BYTE *&#160;</td>
          <td class="paramname"><em>buff</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">LBA_t&#160;</td>
          <td class="paramname"><em>sector</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">UINT&#160;</td>
          <td class="paramname"><em>count</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Reads the drive In case of SD, it reads the SD card using ADMA2 in polled mode. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">pdrv</td><td>- Drive number </td></tr>
    <tr><td class="paramname">buff</td><td>- Pointer to the data buffer to store read data </td></tr>
    <tr><td class="paramname">sector</td><td>- Start sector number </td></tr>
    <tr><td class="paramname">count</td><td>- Sector count</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>RES_OK Read successful STA_NOINIT Drive not initialized RES_ERROR Read not successful</dd></dl>
<dl class="section note"><dt>Note</dt><dd></dd></dl>

<p>References <a class="el" href="diskio_8c.html#a8348ac5ee6d709420c02e45c111f4793">disk_status()</a>, <a class="el" href="diskio_8c.html#a6a4641fe53e931f300c4d2c76b3729a0">XSDPS_NUM_INSTANCES</a>, and <a class="el" href="diskio_8c.html#ae78c57957d7a0cd5922d35610b0831d6">XUFSPSXC_START_INDEX</a>.</p>

</div>
</div>
<a class="anchor" id="a8348ac5ee6d709420c02e45c111f4793"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">DSTATUS disk_status </td>
          <td>(</td>
          <td class="paramtype">BYTE&#160;</td>
          <td class="paramname"><em>pdrv</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Gets the status of the disk. </p>
<p>In case of SD, it checks whether card is present or not.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">pdrv</td><td>- Drive number</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 Status ok STA_NOINIT Drive not initialized STA_NODISK No medium in the drive STA_PROTECT Write protected</dd></dl>
<dl class="section note"><dt>Note</dt><dd>In case Card detect signal is not connected, this function will not be able to check if card is present. </dd></dl>

<p>References <a class="el" href="diskio_8c.html#a6a4641fe53e931f300c4d2c76b3729a0">XSDPS_NUM_INSTANCES</a>.</p>

<p>Referenced by <a class="el" href="diskio_8c.html#a09cdaa6f36fa409bdf002727bff98eb1">disk_initialize()</a>, <a class="el" href="diskio_8c.html#ab00fa450a811dbdabe3c655c1a36fab4">disk_ioctl()</a>, <a class="el" href="diskio_8c.html#a0711b1d03b833e9d73b3be1a6397f461">disk_read()</a>, and <a class="el" href="diskio_8c.html#ac24448955ef914f54a499df1fb45689d">disk_write()</a>.</p>

</div>
</div>
<a class="anchor" id="ac24448955ef914f54a499df1fb45689d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">DRESULT disk_write </td>
          <td>(</td>
          <td class="paramtype">BYTE&#160;</td>
          <td class="paramname"><em>pdrv</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const BYTE *&#160;</td>
          <td class="paramname"><em>buff</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">LBA_t&#160;</td>
          <td class="paramname"><em>sector</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">UINT&#160;</td>
          <td class="paramname"><em>count</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Reads the drive In case of SD, it reads the SD card using ADMA2 in polled mode. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">pdrv</td><td>- Drive number </td></tr>
    <tr><td class="paramname">buff</td><td>- Pointer to the data to be written </td></tr>
    <tr><td class="paramname">sector</td><td>- Sector address </td></tr>
    <tr><td class="paramname">count</td><td>- Sector count</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>RES_OK Read successful STA_NOINIT Drive not initialized RES_ERROR Read not successful</dd></dl>
<dl class="section note"><dt>Note</dt><dd></dd></dl>

<p>References <a class="el" href="diskio_8c.html#a8348ac5ee6d709420c02e45c111f4793">disk_status()</a>, <a class="el" href="diskio_8c.html#a6a4641fe53e931f300c4d2c76b3729a0">XSDPS_NUM_INSTANCES</a>, and <a class="el" href="diskio_8c.html#ae78c57957d7a0cd5922d35610b0831d6">XUFSPSXC_START_INDEX</a>.</p>

</div>
</div>
<a class="anchor" id="af58b536abfd30f77213f4ecaf2ac52f5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">DWORD get_fattime </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function is User Provided Timer Function for FatFs module. </p>
<dl class="section return"><dt>Returns</dt><dd>DWORD</dd></dl>
<dl class="section note"><dt>Note</dt><dd>None </dd></dl>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
	<p class="footer">&copy; Copyright 2015-2022 Xilinx, Inc. All Rights Reserved.</p>
	<p class="footer">&copy; Copyright 2022-2023 Advanced Micro Devices, Inc. All Rights Reserved.</p>
</div>
</body>
</html>
